package com.loveprigrammer.eternity.task.core;

import com.loveprogrammer.eternity.model.mission.MissionDefinition;

import java.util.Map;

/**
 * @version 1.0.0
 * @description:
 * @author: eric
 * @date: 2022-09-15 17:56
 **/
@FunctionalInterface
public interface ITask<T,V> {

    /**
     * 在这里做耗时操作，如rpc请求、IO等
     *
     * @param object      object
     * @param allWrappers 任务包装
     */
    V action(T object, Map<String, MissionDefinition> allWrappers);

    /**
     * 超时、异常时，返回的默认值
     *
     * @return 默认值
     */
    default V defaultValue() {
        return null;
    }
}
